//导入数据库操作模块
const db = require('../db/index.js')
//导入全局配置文件
const config = require('../config.js')
//导入路径定义方法
const path = require('path')
//引入文件模块
const fs = require('fs')

//用户目录句柄储存的处理函数
exports.saveDir = (req, res) => {
    let { userId, directoryInfo } = req.body
    directoryInfo = JSON.stringify(directoryInfo)
    const sql = `update users set local_dir = ? where userId = ?`
    db.query(sql, { directoryInfo, userId }, (err, results) => {
        // 执行 SQL 语句失败
        if (err) {
            return res.cc(err)
        }
        //SQL语句执行成功，但影响行数不为1
        if (results.affectedRows !== 1) {
            return res.cc('用户目录句柄保存失败，请稍后再试!')
        }
        //用户目录句柄保存成功
        res.send({
            code: 200,
            message: '用户目录句柄保存成功!',
            data: directoryInfo,
        })
    })
}

//根据后缀名判断文件类型
const determineFileType = (fileName) => {
    //获取文件扩展名
    const ext = fileName.split('.').pop()?.toLowerCase()
    switch (ext) {
        case 'mp3':
        case 'wav':
        case 'ogg':
            return 'audio' // 音频文件

        case 'mp4':
        case 'avi':
        case 'mkv':
        case 'mov':
            return 'video' // 视频文件

        case 'png':
        case 'jpg':
        case 'jpeg':
        case 'gif':
        case 'bmp':
            return 'picture' // 图片文件

        case 'emoji':
            return 'emoji' // 表情文件

        default:
            return 'file' // 其他文件类型
    }
}

//读取文件的处理函数
exports.readFile = (req, res) => {
    const { filename } = req.params
    const kind = determineFileType(filename)
    if (req.url.indexOf('/chatApp/') !== -1) {
        // 拼接文件的绝对路径
        const filePath = path.join('D:/Documents/chatAppServer', `/${kind}/`, filename)
        fs.readFile(filePath, function (err, data) {
            if (err) {
                return res.cc('找不到该文件', 201)
            }
            res.send({
                code: 200,
                message: '获取文件信息成功！',
                data: data, // 返回文件信息
            })
        })
    }
}
